package com.alit.ibot.robot.wechat.service.impl;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alit.ibot.robot.wechat.service.RobotWechatCommonService;
import com.alit.ibot.robot.wechat.service.RobotWechatEventService;
import com.alit.ibot.robot.wechat.util.WechatCutomerUtil;
import com.alit.ibot.robot.wechat.util.WechatXMLUtil;

import lombok.extern.slf4j.Slf4j;

/**
 * @author litong
 * @date 2019年5月31日_下午12:36:40
 * @version 1.0
 * @desc
 */
@Service
@Slf4j
public class RobotWechatEventServiceImpl implements RobotWechatEventService {

  @Autowired
  private RobotWechatCommonService rwcs;

  @Override
  public String getToWechatXML(Map<String, String> requestMap) {
    String eventType = requestMap.get("Event"); // 获取事件类型
    if ("kf_create_session".equals(eventType)) { // 客服接入,会话已创建
      String name = getKfName(requestMap);
      String content = name + "正在为你服务";
      log.info(content);
      String result = WechatCutomerUtil.sendText(requestMap, content);
      log.info(result);
      return "";
    }

    if ("kf_close_session".equals(eventType)) {
      String name = getKfName(requestMap);
      String content = name + "已关闭会话";
      WechatCutomerUtil.sendText(requestMap, content);
      return "";
    }
    String retval = null;
    if ("subscribe".equals(eventType)) { // 订阅事件
      String content = "Hi，欢迎来到合光机器人，我是U佳~\n\nU佳是一位聪明伶俐、秀外慧中的“女孩子”，通过文本和语音两种交互方式，专门针对客户提供像政务、金融、交通、旅游、医疗等各类行业的专业知识，并在最短的时间，将最准确的信息呈现在客户的眼前，为客户答疑解惑。\n\n提供专业知识是U佳的职能，当然闲聊唠嗑U佳也不在话下，绝对能聊到您怀疑人生~\n\n2017，U佳继续伴您前行!";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;
    }

    String flag = (String) requestMap.get("EventKey"); // 获取时间关键字
    if (flag.equals("01_GAME")) {
      String content = "想和U佳玩游戏吗，请输入“心理测试”或“文字闯关”或“前世今生”，根据提示开始游戏……";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;
    } else if (flag.equals("01_JOKES")) {
      String content = "您是不是无聊了，还是不开心了，U佳会好多笑话和故事，想听吗？请输入“笑话”或“童话故事”或“寓言故事”……";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;

    } else if (flag.equals("01_house")) {
      String question = "智能房产菜单";
      retval = rwcs.getRobotContentAndConvertToWechatXML(requestMap, question);
      return retval;
    } else if (flag.equals("01_help")) {
      String question = "内部助手菜单";
      retval = rwcs.getRobotContentAndConvertToWechatXML(requestMap, question);
      return retval;
    } else if (flag.equals("01_service")) {
      String question = "智能客服菜单";
      retval = rwcs.getRobotContentAndConvertToWechatXML(requestMap, question);
      return retval;
    } else if (flag.equals("01_LOCATION")) {
      String content = "U佳可是小百科全书，输入“星座”了解十二星座，输入“历史上的今天”了解历史上的大事，我还知道各国的日期、时间和首都，我还能查汇率（如美元兑人民币）、算节日（如圣诞节是哪天），只有您想不到没有我答不出……";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;
    } else if (flag.equals("01_DATE")) {
      String content = "输入“车辆限行”查询各省份限行信息，输入“某地某天天气”（如北京明日天气）查询4天以内天气，U佳还能帮您“查黄历”“查区号”，还会背古诗词（您说上句我接下句）、做算术题（直接输入题目），我可是无所不能无所不会……";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;
    } else if (flag.equals("01_UDSHG")) {
      String content = "Hi，我是U佳。任何关于合光的问题都可以问我，我将以饱满的工作热情为您答疑解惑。要是您打字累了，也可以试试语音交互。我不仅精通专业知识，还可以陪您闲聊扯谈。如果喜欢U佳，就置顶公众号或者推荐给您的朋友……";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;
    } else if (flag.equals("02_TEXTNEWS")) {
      String question = "智能前沿菜单";
      retval = rwcs.getRobotContentAndConvertToWechatXML(requestMap, question);
      return retval;
    } else if (flag.equals("02_UDSNEWS")) {
      String question = "合光动态菜单";
      retval = rwcs.getRobotContentAndConvertToWechatXML(requestMap, question);
      return retval;
    } else if (flag.equals("02_SELECT")) {
      String content = "请根据您想了解的内容输入关键词，U佳就会自动帮您检索出相关文章。";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;
    } else if (flag.equals("01_gov")) {
      String question = "智能政务";
      retval = rwcs.getRobotContentAndConvertToWechatXML(requestMap, question);
      return retval;
    } else if (flag.equals("01_finance")) {
      String content = "“经济社会，我们必须要讲一讲金融。”\n\n从简单的如何办理银行卡，到如何进行优化的投资理财，U佳始终在努力成为一个金融小助手，时刻能为客户提供最新的信息。试试输入“保险理财”“我要取钱”……";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;
    } else if (flag.equals("01_traffic")) {
      String content = "“为了你我他，请安全出行。”\n\n上班要迟到，着急的等待班车？出游想租车，不知道如何办理？……问问U佳吧，U佳拥有像管理、运营、出行、租赁等各类交通领域的专业知识，并能根据要求从杂乱的信息中收集精准的信息进行推送，改变了以往的检索方式。试试输入“首汽租车”……";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;
    } else if (flag.equals("01_travel")) {
      String content = "“世界那么大，我想去看看。”\n\n旅行真的这么简单？NO!路线、住宿、交通、餐饮...如何获知呢？别担心，找U佳帮忙，试试输入“北京旅游”“北京风景”……";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;
    } else if (flag.equals("01_health")) {
      String content = "“拥有健康的身体，才能活得更出彩。”\n\n在医疗领域，U佳能提供医院专家介绍、出诊时间、办理流程等信息，让您更便捷的掌握医疗信息，让看病更简单。U佳将和您一起守护您和家人的健康，试试输入“我要挂号”……";
      retval = WechatXMLUtil.toWechatTextXML(requestMap, content);
      return retval;
    } else if (flag.equals("minivedio")) {
      String question = "微视频菜单";
      retval = rwcs.getRobotContentAndConvertToWechatXML(requestMap, question);
      return retval;
    }
    return retval;
  }

  private String getKfName(Map<String, String> requestMap) {
    String name = requestMap.get("KfAccount").split("@")[0];
    return name;
  }
}
